package cn.usbtg.session;

import java.util.Enumeration;

/**
 * btg session
 */
public interface BTGSession {

    /**
     * session创建时间
     *
     * @return long
     */
    long getCreationTime();

    /**
     * 获取session id
     *
     * @return String
     */
    String getId();

    /**
     * 获取最后激活时间
     *
     * @return long
     */
    long getLastAccessedTime();

    /**
     * 设置session最大空闲时间(session过期时间)
     *
     * @param maxInactiveInterval int
     */
    void setMaxInactiveInterval(int maxInactiveInterval);

    /**
     * 获取session最大空间时间(session过期时间)
     *
     * @return int
     */
    int getMaxInactiveInterval();

    /**
     * 获取session上下文
     *
     * @return BTGSessionContext
     */
    BTGSessionContext getSessionContext();

    /**
     * 根据key获取session的value值
     *
     * @param name String
     * @return Object
     */
    Object getAttribute(String name);

    /**
     * 获取session所有参数的key
     *
     * @return Enumeration<String>
     */
    Enumeration<String> getAttributeNames();

    /**
     * 设置session参数值
     *
     * @param name  String
     * @param value Object
     */
    void setAttribute(String name, Object value);

    /**
     * 根据参数名清理session保存的参数
     *
     * @param name
     */
    void removeAttribute(String name);

    /**
     * 使session失效
     */
    void invalidate();

    /**
     * 是否新创建的session
     *
     * @return boolean
     */
    boolean isNew();

    /**
     * 设置最后激活时间
     *
     * @param lastAccessedTime long
     */
    void setLastAccessedTime(long lastAccessedTime);

    /**
     * 是否失效
     *
     * @return boolean
     */
    public boolean isInvalidate();

    /**
     * 使session处于活跃状态
     */
    public void active();
}